加载可能比较慢,可以尝试点击脚注标,会弹出相关内容
王道计算机组成原理视频 提取码: axin
考纲内容
(一)
- 计算机系统层次结构
- 计算机系统的基本组成
- 计算机硬件的基本组成
- 计算机软件和硬件的关系
- 计算机系统的工作原理:“存储系统”方式,高级语言程序与机器语言程序的转换,程序和指令的执行过程
(二)
- 计算机性能指标
- 吞吐量,响应时间,CPU时钟周期,主频,CPI,CPU执行时间
- MIPS,MFLOPS,GFLOPS,TFLOPS,PFLOPS,EFLOPS,ZFLOPS
思考问题
- 计算机由哪几部分组成?以哪部分为中心?
- 主频高的CPU一定比主频低的CPU快吗?为什么?
- 翻译程序,汇编程序,编译程序,解释程序有什么差别?各自的特性是什么?
1.2计算机系统层次结构
1.2.1计算机系统的组成
逻辑功能上是等价的
计算机系统性能的好坏,很大程度上是由软件的效率和作用来表征的,而软件性能的发挥又离不开硬件的支持。对某一功能来说,其既可以用软件来实现,又可以用硬件实现,则称为软硬件在逻辑功能上是等价的。在设计计算机系统时,要进行软/硬件的功能分配。通常来说,一个功能若使用较为频繁且用硬件实现的成本较为理想,使用硬件解决可以提高效率。1.2.2计算机硬件
冯诺依曼机基本思想
- 采用“存储程序存储程序”的工作方式
- 计算机硬件系统由 运算器,存储器,控制器,输入设备和输出设备 5大部件组成。
- 指令和数据以同等地位存储在存储器中,形式上没有区别,但计算器应能区分他们。
- 指令和数据均由二进制代码表示。指令由操作码和地址码组成,操作码指出操作的类型,地址码指出操作数的地址。
计算机的功能部件
(1) 输入设备输入设备 (2) 输出设备输出设备 (3) 存储器 存储器分为主存储器(又称内存储器)和辅助存储器(又称外存储器)。CPU能够直接访问的存储器是主存储器。辅助存储器用于帮助主存储器记忆更多的信息,辅助存储器中的信息必须调入主存后,才能为CPU所访问。
主存储器的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式。
主存储器的最基本组成如图1.1所示。存储体存放二进制信息,地址寄存器(MAR)存放访存地址,经过地址译码后找到所选的存储单元。数据寄存器(MDR)用于暂存要从存储器中读或写的信息,时序控制逻辑用于产生存储器操作所需的各种时序信号。
存储体由许多存储单元组成,每个存储单元包含若干存储元件,每个存储元件存储一位二进制代码“0”或“1”。因此存储单元可存储一串二进制代码,称这串代码为存储字,称这串代码的位数为存储字长,存储字长可以是1B(8bt)或是字节的偶数倍。
MAR用于寻址,其位数对应着存储单元的个数,如MAR为10位,则有210=1024个存储单元,记为1K。MAR的长度与PC的长度相等。
MDR的位数和存储字长相等,一般为字节的2次幂的整数倍。
注意
拓展一个概念—— 存储元:即存储二进制元件的电子原件,每个存储元可存1bit注意:MAR与MDR虽然是存储器的一部分,但在现代计算机中却是存在于CPU中的:另外,后文提到的高速缓存(Cache.)也存在于CPU中。
(4) 运算器运算器
(5) 控制器
控制器是计算机的指挥中心,由其“指挥”各部件自动协调地进行工作。控制器由程序计数器(PC)PC、指令寄存器(IR)IR和控制单元(CU)组成。
一般将运算器和控制器集成到同一芯片上,称为中央处理器(CPU)。CPU和主存储器共同构成主机,而除主机外的其他硬件装置(外存、I/O设备等)统称为外部设备,简称外设。
图1.2所示为冯·诺依曼结构的模型机。CPU包含ALU、通用寄存器组GPRs、标志寄存器、控制器、指令寄存器IR、程序计数器PC、存储器地址寄存器MAR和存储器数据寄存器MDR。图中从控制器送出的虚线就是控制信号,可以控制如何修改PC以得到下一条指令的地址,可以控制ALU执行什么运算,可以控制主存是进行读操作还是写操作(读/写控制信号)。
冯·诺依曼结构的模型机
CPU和主存之间通过一组总线相连,总线中有地址、控制和数据3组信号线。MAR中的地址信息会直接送到地址线上,用于指向读/写操作的主存存储单元;控制线中有读/写信号线,指出数据是从CPU写入主存还是从主存读出到CPU,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中。
1.2.3计算机软件
1.系统软件和应用软件
软件按功能分类可分为:
2.三个级别的语言
三个级别的语言:
翻译程序翻译程序有以下三类:
3.软件和硬件的逻辑功能等价性
硬件实现的往往是最基本的算术和逻辑运算功能,而其他功能大多通过软件的扩充得以实现。对某一功能来说,既可以由硬件实现,又可以由软件实现,从用户的角度来看,它们在功能上是等价的。这一等价性被称为软、硬件逻辑功能的等价性。软、硬件逻辑功能的等价性例如
软件和硬件功能界面的划分是由设计目标、性能价格比、技术水平等综合因素决定的。
1.2.4计算机系统的层次结构
目前无统一标准,此处采用如图所示:
图1.3计算机系统的多级层次结构
第1级是微程序机器层,这是一个实在的硬件层,它由机器硬件直接执行微指令。 第2级是传统机器语言层,它也是一个实际的机器层,由微程序解释机器指令系统。 第3级是操作系统层,它由操作系统程序实现。操作系统程序是由机器指令和广义指令组成的,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,所以这一层也称混合层。 第4级是汇编语言层,它为用户提供一种符号化的语言,借此可编写汇编语言源程序。这一层由汇编程序支持和执行。 第5级是高级语言层,它是面向用户的,是为方便用户编写应用程序而设置的。该层由各种高级语言编译程序支持和执行。在高级语言层之上,还可以有应用程序层,它由解决实际问题的处理程序组成,如文字处理软件、多媒体处理软件和办公自动软件等。
没有配备软件的纯硬件系统称为裸机。第3层~第5层称为虚拟机,简单来说就是软件实现的机器。虚拟机器只对该层的观察者存在,这里的分层和计算机网络的分层类似,对于某层的观察者来说,只能通过该层的语言来了解和使用计算机,而不必关心下层是如何工作的。
层次之间的关系紧密,下层是上层的基础,上层是下层的扩展。
软件和硬件之间的界面就是指令集体系结构(ISA)ISA。
1.2.5计算机系统的工作原理
1. "存储程序"工作方式存储程序工作方式
2. 从源程序到可执行程序从源程序到可执行程序
图1.5源程序转换为可执行文件的过程
- 1)预处理阶段
- 2)编译阶段
- 3)汇编阶段
- 4)链接阶段
3. 程序执行过程的描述程序执行过程的描述
4. 指令执行过程的描述指令执行过程的描述
1.2.6本节习题精选
一、单项选择题
01.完整的计算机系统应包括()。
A是计算机主机的组成部分,而B、C只涉及计算机系统的部分内容,都不完整。
02.冯·诺依曼机的基本工作方式是()。
03.下列()是冯·诺依曼机工作方式的基本特点。
04.以下说法错误的是()。
05.存放当前执行指令的寄存器是()。
06.在CPU中,跟踪下一条要执行的指令的地址的寄存器是()。
07.CPU不包括()。
08.MAR和MDR的位数分别为()。
09.在运算器中,不包含()
10.下列关于CPU存取速度的比较中,正确的是()。
11.若一个8位的计算机系统以16位来表示地址,则该计算机系统有()个地址空间。
12.()是程序运行时的存储位置,包括所需的数据。
13.下列()属于应用软件。
14.关于编译程序和解释程序,下列说法中错误的是()。
15.可以在计算机中直接执行的语言和用助记符编写的语言分别是()。
Ⅰ.机器语言
Ⅱ.汇编语言
Ⅲ.高级语言
Ⅳ.操作系统原语
Ⅴ.正则语言
16.只有当程序执行时才将源程序翻译成机器语言,并且一次只能翻译一行语句,边翻译边执行的是()程序,把汇编语言源程序转变为机器语言程序的过程是()。
Ⅰ.编译
Ⅱ.目标
Ⅲ.汇编
Ⅳ.解释
17.下列叙述中,正确的是()。
Ⅰ.实际应用程序的测试结果能够全面代表计算机的性能
Ⅱ.系列机的基本特性是指令系统向后兼容
Ⅲ.软件和硬件在逻辑功能上是等价的
18.在CPU的组成中,不包括()。
19.下列()不属于系统软件。
1.3计算机的性能指标
1.3.1计算机的主要性能指标
1.4 本章小结
- 计算机由哪几部分组成?以哪部分为中心?1.4.1
- 主频高的CPU一定比主频低的CPU快吗?为什么?1.4.2
- 翻译程序,汇编程序,编译程序,解释程序有什么差别?各自的特性是什么?1.4.3
- 不同级别的语言编写的程序有什么区别?哪种语言编写的程序能被硬件直接执行?1.4.4
1.5 1.5常见问题和易混淆知识点
- 翻译程序、解释程序、汇编程序、编译程序的区别和联系是什么?1.5.1
- 什么是透明性?透明是指什么都能看见吗?1.5.2
- 字、字长、机器字长、指令字长、存储字长的区别和联系是什么?1.5.3
- 计算机体系结构和计算机组成的区别和联系是什么?1.5.4
- 基准程序执行得越快说明机器的性能越好吗?1.5.5
脚注分界线
1.5.5. 一般情况下,基准测试程序能够反映机器性能的好坏。但是,由于基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题。 ↩
1.5.4. 计算机体系结构是指机器语言或汇编语言程序员所看得到的传统机器的属性,包括指令集、数据类型、存储器寻址技术等,大都属于抽象的属性。
计算机组成是指如何实现计算机体系结构所体现的属性,它包含对许多对程序员来说透明的硬件细节。例如,指令系统属于结构的问题,但指令的实现即如何取指令、分析指令、取操作数、如何运算等都属于组成的问题。因此,当两台机器指令系统相同时,只能认为它们具有相同的结构,至于这两台机器如何实现其指令,完全可以不同,即可以认为它们的组成方式是不同的。例如,一台机器是否具备乘法指令是一个结构的问题,但实现乘法指令采用什么方式则是一个组成的问题。许多计算机厂商提供一系列体系结构相同的计算机,而它们的组成却有相当大的差别,即使是同一系列的不同型号机器,其性能和价格差异也很大。 ↩
1.5.3. 在通常所说的“某16位或32位机器”中,16、32指的是字长,也称机器字长。所谓字长,通常是指CPU内部用于整数运算的数据通路的宽度,因此字长等于CPU内部用于整数运算的运算器位数和通用寄存器宽度,它反映了计算机处理信息的能力。字和字长的概念不同。字用来表示被处理信息的单位,用来度量数据类型的宽度,如x86机器中将一个字定义为16位。
指令字长:一个指令字中包含的二进制代码的位数。
存储字长:一个存储单元存储的二进制代码的长度。
它们都必须是字节的整数倍。
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2个访存周期来取出一条指令;若指令字长等于存储字长,则取指周期等于机器周期。
早期的存储字长一般与指令字长、字长相等,因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展,指令字长、字长都可变,但必须都是字节的整数倍。 ↩
1.5.2. 在计算机领域中,站在某类用户的角度,若感觉不到某个事物或属性的存在,即“看”不到某个事物或属性,则称为“对该用户而言,某个事物或属性是透明的”。这与日常生活中的“透明”概念(公开、看得见)正好相反。
例如,对于高级语言程序员来说,浮点数格式、乘法指令等这些指令的格式、数据如何在运算器中运算等都是透明的;而对于机器语言或汇编语言程序员来说,指令的格式、机器结构、数据格式等则不是透明的。
在CPU中,R、MAR和MDR对各类程序员都是透明的。 ↩
1.5.1. 翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,只要源程序不变,就无须重新翻译。另一种是解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有源程序语句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句,并且不会生成目标程序。
汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。编译程序与汇编程序的区别:若源语言是诸如C、C++、Java等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,则这样的一个翻译程序称为编译程序。若源语言是汇编语言,而目标语言是机器语言,则这样的一个翻译程序称为汇编程序。 ↩
1.4.1. 计算机由运算器、控制器、存储器、输入设备及输出设备五大部分构成,现代计算机通常把运算器和控制器集成在一个芯片上,合称为中央处理器。
而在微处理器面世之前,运算器和控制器分离,而且存储器的容量很小,因此设计成以运算器为中心的结构,其他部件都通过运算器完成信息的传递。
随着微电子技术的进步,同时计算机需要处理、加工的信息量也与日俱增,大量/O设备的速度和CPU的速度差距悬殊,因此以运算器为中心的结构不能满足计算机发展的要求。现代计算机已经发展为以存储器为中心,使/O操作尽可能地绕过CPU,直接在I/O设备和存储器之间完成,以提高系统的整体运行效率。 ↩
1.4.2. 衡量CPU运算速度的指标有很多,不能以单独的某个指标来判断CPU的好坏。CPU的主频,即CPU内核工作的时钟频率。CPU的主频表示CPU内数字脉冲信号振荡的速度,主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公式能够定量两者的数值关系,因为CPU的运算速度还要看CPU的流水线的各方面的性能指标(架构、缓存、指令集、CPU的位数、Cache大小等)。由于主频并不直接代表运算速度,因此在一定情况下很可能会出现主频较高的CPU实际运算速度较低的现象。 ↩
1.4.3. 见常见问题和易混淆知识点1。 ↩
1.4.4. 机器语言和汇编语言与机器指令对应,而高级语言不与指令直接对应,具有较好的可移植性。其中机器语言可以被硬件直接执行。 ↩
MIPS. 即每秒执行多少百万条指令。
MIPS=指令条数/(执行时间×106)=主频/(CPI×106)
MPS对不同机器进行性能比较是有缺陷的,因为不同机器的指令集不同,指令的功能也就不同,比如在机器M1上某条指令的功能也许在机器M2上要用多条指令来完成:不同机器的CPI和时钟周期也不同,因而同一条指令在不同机器上所用的时间也不同。 ↩
CPU执行时间. 指运行一个程序所花费的时间。
CPU执行时间=CPU时钟周期数/主频=(指令条数×CPI)/主频上式表明,CPU的性能(CPU执行时间)取决于三个要素:①主频(时钟频率):②每条指令执行所用的时钟周期数(CPI):③指令条数
主频、CPI和指令条数是相互制约的。例如,更改指令集可以减少程序所含指令的条数,但同时可能引起CPU结构的调整,从而可能会增加时钟周期的宽度(降低主频)。 ↩
CPI. 即执行一条指令所需的时钟周期数。不同指令的时钟周期数可能不同,因此对于一个程序或一台机器来说,其CPI指该程序或该机器指令集中的所有指令执行所需的平均时钟周期数,此时CPI是一个平均值。 ↩
注意. CPU时钟周期=1/主频,主频通常以Hz(赫兹)为单位,1Hz表示每秒1次 ↩
CPU时钟周期. 通常为节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位,执行指令的每个动作至少需要1个时钟周期 ↩
主频(CPU时钟频率). 机器内部主时钟的频率,是衡量机器速度的重要参数。对于同一个型号的计算机,其主频越高,完成指令的一个执行步骤所用的时间越短,执行指令的速度越快。例如,常用CPU的主频有1.8GHz、2.4GHz、2.8GHz等 ↩
响应时间. 指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间。通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等的时间) ↩
吞吐量. 指系统在单位时间内处理请求的数量。它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。几乎每步都关系到主存,因此系统吞吐量主要取决于主存的存取周期。 ↩
基准程序. 基准程序(Benchmarks)是专门用来进行性能评价的一组程序,能够很好地反映机器在运行实际负载时的性能,可以通过在不同机器上运行相同的基准程序来比较在不同机器上的运行时间,从而评测其性能。对于不同的应用场合,应该选择不同的基准程序。
使用基准程序进行计算机性能评测也存在一些缺陷,因为基准程序的性能可能与某一小段的短代码密切相关,而硬件系统设计人员或编译器开发者可能会针对这些代码片段进行特殊的优化,使得执行这段代码的速度非常快,以至于得不到准确的性能评测结果。 ↩
主存容量. 主存容量是指主存储器所能存储信息的最大容量,通常以字节来衡量,也可用字数×字长(如512K×16位)来表示存储容量。其中,MAR的位数反映了存储单元的个数,MDR的位数反映了存储单元的字长。例如,MAR为16位,表示216=65536,即此存储体内有65536个存储单元(可称为64K内存,1K=1024),若MD为32位,表示存储容量为64K×32位。 ↩
数据通路带宽. 数据通路带宽是指数据总线一次所能并行传送信息的位数。这里所说的数据通路宽度是指外部数据总线的宽度,它与CPU内部的数据总线宽度(内部寄存器的大小)有可能不同。注意:各个子系统通过数据总线连接形成的数据传送路径称为数据通路。 ↩
字长. 字长是指计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数,通常与CPU的寄存器位数、加法器有关。因此,字长一般等于内部寄存器的大小,字长越长,数的表示范围越大,计算精度越高。计算机字长通常选定为字节(8位)的整数倍。 ↩
指令执行过程的描述. ↩
程序执行过程的描述. ↩
从源程序到可执行程序.
1)预处理阶段:预处理器(cpp)对源程序中以字符#开头的命令进行处理,例如将include命令后面的.h文件内容插入程序文件。输出结果是一个以.i为扩展名的源文件hello.i。
2)编译阶段:编译器(ccI)对预处理后的源程序进行编译,生成一个汇编语言源程序hello.s。汇编语言源程序中的每条语句都以一种文本格式描述了一条低级机器语言指令。
3)汇编阶段:汇编器(as)将hello.s翻译成机器语言指令,把这些指令打包成一个称为可重定位目标文件的hello.o,它是一种二进制文件,因此用文本编辑器打开会显示乱码。
4)链接阶段:链接器(ld)将多个可重定位目标文件和标准库函数合并为一个可执行目标文件,或简称可执行文件。本例中,链接器将hello.o和标准库函数printf所在的可重定位目标模块printf.o合并,生成可执行文件hello。最终生成的可执行文件被保存在磁盘上。 ↩
存储程序工作方式. “存储程序”工作方式规定,程序执行前,需要将程序所含的指令和数据送入主存,一旦程序被启动执行,就无须操作人员的干预,自动逐条完成指令的取出和执行任务。如图1.4所示,一个程序的执行就是周而复始地执行一条一条指令的过程。每条指令的执行过程包括:从主存取指令、对指令进行译码、计算下条指令地址、取操作数并执行、将结果送回存储器。 ↩
软、硬件逻辑功能的等价性例如. 浮点数运算既可以用专门的浮点运算器硬件实现,又可以通过一段子程序实现,这两种方法在功能上完全等效,不同的只是执行时间的长短而已,显然硬件实现的性能要优于软件实现的性能。 ↩
高级语言. 高级语言(如C,C++等)是为方便程序设计人员写出解决问题的处理方案和解题过程的程序。通常高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序或直接由高级语言程序翻译成机器语言程序。 ↩
汇编语言. 汇编语言用英语单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为机器语言程序后,才能在计算机的硬件系统上执行。 ↩
机器语言. 又称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。 ↩
IR. IR用来存放当前的指令,其内容来自主存的MDR。指令中的操作码OP(IR)送至CU,用以分析指令并发出各种微操作命令序列:而地址码Ad(IR)送至MAR,用以取操作数。 ↩
PC. PC用来存放当前欲执行指令的地址,具体自动加1的功能(这里的“1”指一条指令的长度),即可自动形成下一条指令的地址,它与主存的MAR之间有一条直接通路。 ↩
运算器. 运算器是计算机的执行部件,用于进行算术运算和逻辑运算。算术运算是按算术运算规则进行的运算,如加、减、乘、除:逻辑运算包括与、或、非、异或、比较、移位等运算。
运算器的核心是算术逻辑单元(Arithmetic and Logical Unit,ALU)。运算器包含若干通用寄存器,用于暂存操作数和中间结果,如累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、变址寄存器(IX)、基址寄存器(BR)等,其中前3个寄存器是必须具备的。
运算器内还有程序状态寄存器(PSW),也称标志寄存器,用于存放ALU运算得到的一些标志信息或处理机的状态信息,如结果是否溢出、有无产生进位或借位、结果是否为负等。 ↩
输出设备. 输出设备的任务是将计算机处理的结果以人们所能接受的形式或其他系统所要求的信息形式输出。最常用、最基本的输出设备是显示器、打印机。输入输出设备(简称/O设备)是计算机与外界联系的桥梁,是计算机中不可缺少的重要组成部分。 ↩
输入设备. 输入设备的主要功能是将程序和数据以机器所能识别和接受的信息形式输入计算机。最常用也最基本的输入设备是键盘,此外还有鼠标、扫描仪、摄像机等。 ↩
ISA. ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。可以看出,ISA是指软件能感知到的部分,也称软件可见部分。 ↩
编译程序. 将高级语言程序翻译成汇编语言或机器语言程序。 ↩
解释程序. 将源程序中的语句按执行顺序逐条翻译成机器指令并立刻执行。 ↩
汇编程序. 将汇编语言程序翻译成机器语言程序。 ↩
翻译程序. 由于计算机无法直接理解和执行高级语言程序,需要将高级语言程序转化为机器语言程序,通常把进行这种转换的软件系统称为翻译程序。 ↩
应用软件. 用户为解决某个应用领域中的各类问题而编制的程序,如各种科学计算类程序,工程设计类程序等。 ↩
系统软件. 一组保证计算机系统高效,正确运行的基础软件,通常作为系统资源提供给用户使用。主要有操作系统(OS),数据库管理系统(DBMS),语言处理程序,分布式软件系统,网络软件系统等。 ↩
存储程序. 基本思想:将事先编制好的程序和原始数据送入主存后才执行,一旦程序被启动执行,就无须操作人员的干预,计算机会自动逐条执行指令,直至程序执行结束。 ↩
软件. 指在硬件上运行的程序和相关的数据文档。 ↩
硬件. 指有形的物理设备,是计算机系统中实际物理装置的总称。 ↩